package Contato;

import java.io.Serializable;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

import Escola.Escola;
import Pessoa.Pessoa;
import TipoContato.TipoContato;


@Entity
@Table (name = "tab_contato")
public class Contato implements Serializable{
	private static final long serialVersionUID = 1L;

	@Id
	@GeneratedValue (strategy = GenerationType.IDENTITY)
	@Column (unique = true, nullable = false)
	private Integer codContato;
	@Column (length = 50)
	private String dscContato;
	@Column (length = 200)
	private String obsContato;
	@ManyToOne (fetch = FetchType.EAGER,  cascade = {CascadeType.MERGE, CascadeType.PERSIST})
	@JoinColumn
	private Pessoa pessoa;
	@ManyToOne (fetch = FetchType.EAGER, cascade = {CascadeType.MERGE, CascadeType.PERSIST})
	@JoinColumn
	private Escola escola;
	@ManyToOne (fetch = FetchType.EAGER, cascade = {CascadeType.MERGE, CascadeType.PERSIST})
	@JoinColumn
	private TipoContato tipoContato;

	
	public Contato() {
		super();
	}



	public Contato(String dscContato, String obsContato, Pessoa pessoa,
			TipoContato tipoContato) {
		super();
		this.dscContato = dscContato;
		this.obsContato = obsContato;
		this.pessoa = pessoa;
		this.tipoContato = tipoContato;
	}



	public Contato(String dscContato, String obsContato,
			Escola escola, TipoContato tipoContato) {
		super();
	
		this.dscContato = dscContato;
		this.obsContato = obsContato;
		this.escola = escola;
		this.tipoContato = tipoContato;
	}


	public Integer getCodContato() {
		return codContato;
	}

	public void setCodContato(Integer codContato) {
		this.codContato = codContato;
	}


	public String getDscContato() {
		return dscContato;
	}

	public void setDscContato(String dscContato) {
		this.dscContato = dscContato;
	}

	public String getObsContato() {
		return obsContato;
	}

	public void setObsContato(String obsContato) {
		this.obsContato = obsContato;
	}

	public Pessoa getPessoa() {
		return pessoa;
	}

	public void setPessoa(Pessoa pessoa) {
		this.pessoa = pessoa;
	}


	public Escola getEscola() {
		return escola;
	}


	public void setEscola(Escola escola) {
		this.escola = escola;
	}

	public TipoContato getTipoContato() {
		return tipoContato;
	}

	public void setTipoContato(TipoContato tipoContato) {
		this.tipoContato = tipoContato;
	}


	public static long getSerialversionuid() {
		return serialVersionUID;
	}

	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result
				+ ((codContato == null) ? 0 : codContato.hashCode());
		return result;
	}



	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Contato other = (Contato) obj;
		if (codContato == null) {
			if (other.codContato != null)
				return false;
		} else if (!codContato.equals(other.codContato))
			return false;
		return true;
	}



	@Override
	public String toString() {
		return dscContato ;
	}
	
	
	
}
